package com.rede.didiok.user.service;

import java.util.Map;

import javax.servlet.http.HttpServletRequest;

import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.service.IService;
import com.rede.didiok.common.dto.user.WebVisitDto;
import com.rede.didiok.user.entity.WebVisitEntity;

/**
 * Web访问记录表
 *
 * @author Rede
 * @email didiok@foxmail.com
 * @date 2023-08-07 18:21:17
 */
public interface WebVisitService extends IService<WebVisitEntity> {

    /***************************** didiok-admin:start **************************/
    // region  didiok-admin

    /**
     * 获取今日网站访问人数
     *
     * @return
     */
    Integer getWebVisitCount();

    /**
     * 获取近七天的访问量
     *
     * @return {
     * date: ["2019-6-20","2019-6-21","2019-6-22","2019-6-23","2019-6-24",,"2019-6-25","2019-6-26"]
     * pv: [10,5,6,7,5,3,2]
     * uv: [5,3,4,4,5,2,1]
     * }
     * 注：PV表示访问量   UV表示独立用户数
     */
    Map<String, Object> getWebVisitByWeek();

    /**
     * 获取访问列表
     *
     * @param webVisitDto
     * @return
     */
    IPage<WebVisitEntity> getPageList(WebVisitDto webVisitDto);


    // endregion
    /***************************** didiok-admin:end **************************/



    /***************************** didiok-web:start **************************/
    // region didiok-web

    // endregion
    /***************************** didiok-web:end **************************/

    /**
     * 增加访问记录（异步接口）
     *
     * @param userUid
     * @param request
     * @param behavior
     * @param moduleUid
     * @param otherData
     */
    void addWebVisit(String userUid, HttpServletRequest request, String behavior, String moduleUid, String otherData);

    /**
     * 获取一周访问数
     *
     * @return
     */
    Integer getVisitCountByWeek(String userUid);

}

